package com.example.hw01;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;

// 声明这是一个 Servlet，映射的 URL 是 /CartServlet
@WebServlet(name = "CartServlet", urlPatterns = "/CartServlet")
public class CartServlet extends HttpServlet {

    // 处理 HTTP GET 请求的方法
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        // 设置响应内容类型为 HTML，并指定字符编码
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter(); // 获取向客户端输出的打印写入器

        // 变量 cart 用于引用用户的购物车
        List<Cake> cart = null;

        // 变量 purFlag 用于标记用户是否购买过商品
        boolean purFlag = true;

        // 获得用户的 session，如果没有则返回 null
        HttpSession session = req.getSession(false);

        // 如果 session 为 null，说明用户没有有效的登录状态
        if (session == null) {
            purFlag = false; // 设置 purFlag 为 false
        } else {
            // 从 session 中获取用户的购物车
            cart = (List<Cake>) session.getAttribute("cart");

            // 如果购物车为 null，说明用户没有购买任何商品
            if (cart == null) {
                purFlag = false; // 设置 purFlag 为 false
            }
        }

        /*
         * 如果 purFlag 为 false，说明用户没有购买任何商品，
         * 显示相应的信息
         */
        if (!purFlag) {
            out.write("对不起！您还没有购买任何商品！<br>");
        } else {
            // 否则，显示用户所购买的商品信息
            out.write("您购买的蛋糕有：<br>");
            double price = 0; // 变量 price 用于记录总金额，虽然在此未使用
            for (Cake cake : cart) {
                out.write(cake.getName() + "<br>"); // 输出每个蛋糕的名称
            }
        }
    }
}
